/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.edu.pucp.Envios.Controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JOptionPane;
import pe.edu.pucp.Envios.DAO.EnviosDAO;
import pe.edu.pucp.Envios.Vista.AdministrarEntregasGUI;
import pe.edu.pucp.Modelo.Envio;
import pe.edu.pucp.Modelo.Itinerario;
import pe.edu.pucp.Modelo.Usuario;
import pe.edu.pucp.Util.Constante;
import pe.edu.pucp.Util.LogHelper;

/**
 *
 * @author pachon
 */
public class AdministrarEntregasControlador {
    private EnviosDAO m;
    private Usuario user;
    private Itinerario itinerario;
    private Envio envio;
    private AdministrarEntregasGUI view;
    
    public AdministrarEntregasControlador(EnviosDAO dao, AdministrarEntregasGUI view, Usuario user){
        this.m = dao;
        this.view = view;
        this.itinerario = view.getItinerario();
        this.envio = this.itinerario.getEnvio();        
        this.user = user;
        SetValues();                
        view.addCancelarButtonListener(new CancelarButtonListener());
        view.addGuardarButtonListener(new GuardarButtonListener());
    }
    public AdministrarEntregasControlador(EnviosDAO dao, AdministrarEntregasGUI view, Itinerario it, Usuario user){
        this.m = dao;
        this.view = view;
        this.itinerario = it;
        this.user = user;
        if (this.itinerario!= null){
            this.envio = this.itinerario.getEnvio();
            SetValues();                    
        }else{                       
        this.itinerario = m.buscarItinerario();
        this.envio = this.itinerario.getEnvio();
        SetValues();                    }
        view.addCancelarButtonListener(new CancelarButtonListener());
        view.addGuardarButtonListener(new GuardarButtonListener());
    }
    
    private void SetValues(){
        view.setCliente(itinerario.getEnvio().getCliente().getNombre() + " " + itinerario.getEnvio().getCliente().getAppaterno()+" " + itinerario.getEnvio().getCliente().getAppaterno());
        view.setReceptor(itinerario.getEnvio().getReceptor());
		///
	view.setPaquetes(String.valueOf(itinerario.getEnvio().getNumpack()-itinerario.getEnvio().getNumpacklost()));
		///
        Date date = new Date();
        view.setFecha(date);        
        DateFormat formatter ; 
        formatter = new SimpleDateFormat("HH:mm:ss");
        String hora = formatter.format(date);
        view.setHora(hora);
    }
    class CancelarButtonListener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            view.dispose();
        }        
    }
    class GuardarButtonListener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            try {
                int puntaje = view.getPuntaje();
                envio.setPuntaje(puntaje);
		m.EntregarEnvio(user, envio, itinerario);
                LogHelper.registrarOperacion(user, Constante.ACCION_ENTREGAR, Constante.OBJETO_ENVIO, "Se registró la entrega del envio con código "+envio.getIdenvio());
		JOptionPane.showMessageDialog(view.getPadre(), "Se registró correctamente la entrega del envío", "Confirmación", JOptionPane.INFORMATION_MESSAGE);                
                view.dispose();
            } catch( Exception ec) {
		JOptionPane.showMessageDialog(view.getPadre(), "No se pudo entregar el envío. Error: " + ec.getMessage(), "Error", JOptionPane.ERROR_MESSAGE); 
                view.dispose();
            }	
        }
    }
    
}
